#include <stdio.h>
int Add(int x, int y)
{ 
	return x + y;
}
int Sub(int x, int y)
{
    return x - y;
}
int Mul(int x, int y)
{
    return x * y;
}

int Div(int x, int y){
    return x / y;
}

int main()
{
    int x = 1;
    int y = 2;
    int i = 0;
    int arr[10] = { 0 };
    int (*p)[10] = &arr;
    // 输出函数的地址
    printf("函数Add的地址---> %p\n", &Add);
    printf("函数Add的地址---> %p\n", Add);
    // 函数指外的定义
    int (*pa)(int, int) = Add;
    // 通过函数指针调用函数(*可省略，加*表示解引用)
    // 圆括号的优先级比*解引用高
    printf("%d\n", (*pa)(2, 3));
    // 定义一个存放函数指针的数组
    int (*fp[4])(int, int) = {Add, Sub, Mul, Div};
    // 遍历指针数组中函数指针，通过函数指针来调用函数
    printf("通过函数指针调用返回的结果：\n");
    for (i=0; i<4; i++)
    {
        printf("%d\n", fp[i](2, 3));  // 5 -1 6 0
    }
    return 0;
}
